1. Bases de datos en AWS
Las bases de datos permiten almacenar, organizar y consultar información de forma estructurada.
Actualmente prácticamente todas las aplicaciones modernas utilizan bases de datos:
- Redes sociales
- Tiendas online
- Aplicaciones móviles
- Sistemas bancarios
- Videojuegos
Problemas tradicionales
- Mantenimiento servidores
- Copias de seguridad
- Escalabilidad
- Seguridad
- Alta disponibilidad
AWS simplifica gran parte de estos problemas mediante servicios administrados.
Mini-test
¿Qué permite una base de datos?
2. Bases de datos relacionales
Las bases de datos relacionales organizan información en tablas.
Cada tabla contiene filas y columnas.
Elementos principales
- Tabla → entidad
- Fila → registro
- Columna → atributo
Ejemplo
| ID | Nombre | Edad |
|---|---|---|
| 1 | Ana | 21 |
| 2 | Luis | 30 |
Ventajas
- Integridad de datos
- Relaciones entre tablas
- Consultas potentes
- Estándar SQL
Mini-test
¿Cómo se organiza una base de datos relacional?
3. Claves primarias y foráneas
Primary Key
Identifica de forma única cada fila.
id SERIAL PRIMARY KEY
Foreign Key
Relaciona tablas entre sí.
Ejemplo conceptual
usuarios
---------
id
nombre
pedidos
---------
id
usuario_id
usuario_id conecta pedidos con usuarios.
Ventajas
- Evitar duplicados
- Mantener integridad
- Crear relaciones complejas
Mini-test
¿Qué hace una clave primaria?
4. On-Premise vs EC2 vs RDS
On-Premise
La empresa administra absolutamente todo:
- Hardware
- Red
- Sistema operativo
- Base de datos
- Backups
Amazon EC2
AWS administra infraestructura física, pero nosotros seguimos administrando la base de datos.
Amazon RDS
AWS automatiza:
- Instalación
- Backups
- Parches
- Alta disponibilidad
| Modelo | Responsabilidad usuario |
|---|---|
| On-Premise | Todo |
| EC2 | SO y BD |
| RDS | Uso y optimización |
Mini-test
¿Qué servicio administra automáticamente backups?
5. Amazon RDS
Amazon RDS (Relational Database Service) es el servicio administrado de bases de datos relacionales de AWS.
Motores soportados
- PostgreSQL
- MySQL
- MariaDB
- Oracle
- SQL Server
- Amazon Aurora
Ventajas
- Backups automáticos
- Escalabilidad
- Monitorización
- Alta disponibilidad
- Menos administración
Mini-test
¿Qué significa RDS?
6. Instancias en Amazon RDS
Al crear una base de datos RDS debemos elegir varios elementos fundamentales.
Clase de instancia
Define CPU, RAM y red.
Almacenamiento
- HDD
- SSD
- Provisioned IOPS
Motor
Define el software de base de datos.
| Motor | Uso habitual |
|---|---|
| PostgreSQL | Open source avanzado |
| MySQL | Aplicaciones web |
| Aurora | Máximo rendimiento AWS |
Mini-test
¿Qué define la clase de instancia?
7. Amazon RDS dentro de una VPC
Por seguridad, las bases de datos RDS suelen colocarse en subredes privadas.
Arquitectura típica
Internet
↓
EC2 pública
↓
RDS privada
Ventajas
- Mayor seguridad
- Menos exposición
- Acceso controlado
Los usuarios nunca acceden directamente a la base de datos.
Mini-test
¿Dónde suele colocarse RDS?
8. Multi-AZ y alta disponibilidad
Multi-AZ crea automáticamente una copia sincronizada en otra zona de disponibilidad.
Funcionamiento
- Base principal
- Base secundaria
- Replicación síncrona
Failover
Si falla la principal, AWS cambia automáticamente a la secundaria.
Objetivo principal
Evitar caídas.
Mini-test
¿Qué objetivo tiene Multi-AZ?
9. Read Replicas
Las réplicas de lectura permiten escalar consultas SQL.
Funcionamiento
- Principal → escritura
- Réplica → lecturas
Replicación asíncrona
Puede existir un pequeño retraso entre principal y réplica.
Casos típicos
- Consultas pesadas
- Aplicaciones muy visitadas
- Escalabilidad horizontal
| Multi-AZ | Read Replica |
|---|---|
| Alta disponibilidad | Rendimiento |
| Failover automático | Lecturas escaladas |
Mini-test
¿Qué mejoran las Read Replicas?
10. PostgreSQL en EC2
También podemos instalar manualmente PostgreSQL dentro de una instancia EC2 Ubuntu.
Instalación
sudo apt update -y
sudo apt -y install postgresql postgresql-contrib
sudo apt -y install postgresql-client
Activar servicio
sudo systemctl enable --now postgresql
sudo systemctl status postgresql --no-pager
Entrar como administrador
sudo -u postgres psql
Mini-test
¿Qué comando inicia PostgreSQL?
11. SQL básico y pruebas
Crear base de datos
CREATE DATABASE fp_prometeo;
Crear usuario
CREATE USER alumno
WITH ENCRYPTED PASSWORD 'Alumno123!';
Permisos
GRANT ALL PRIVILEGES ON DATABASE fp_prometeo TO alumno;
Crear tabla
CREATE TABLE visitas (
id SERIAL PRIMARY KEY,
alumno TEXT NOT NULL,
momento TIMESTAMP NOT NULL DEFAULT now()
);
Insertar datos
INSERT INTO visitas (alumno)
VALUES ('Ana'), ('Luis');
Consultar datos
SELECT * FROM visitas ORDER BY id;
Mini-test
¿Qué comando consulta registros?
12. Seguridad en bases de datos AWS
Buenas prácticas
- Subredes privadas
- Security Groups restrictivos
- Contraseñas fuertes
- Cifrado
- Backups automáticos
Puerto PostgreSQL
5432
Puerto MySQL
3306
Mini-test
¿Qué puerto usa PostgreSQL?
13. Costes y facturación RDS
RDS cobra principalmente mientras la base de datos está activa.
Factores principales
- Tipo instancia
- Motor
- Almacenamiento
- Transferencia datos
- Multi-AZ
Modalidades
| Modo | Ventaja |
|---|---|
| On-Demand | Flexible |
| Reserved | Más barato |
Mini-test
¿Qué modalidad suele ser más barata?
14. Arquitectura completa típica
Arquitectura segura moderna
Usuarios
↓
Internet
↓
Load Balancer
↓
EC2 pública
↓
RDS privada
Funcionamiento
- Usuarios acceden a aplicación
- EC2 procesa peticiones
- RDS almacena datos
- Backups automáticos protegen información
Ventajas
- Escalabilidad
- Seguridad
- Alta disponibilidad
- Automatización
Mini-test
¿Dónde suele ubicarse la base de datos?